package be.kdg.bombermanunlimited.server.audiomanager;

import be.kdg.bombermanunlimited.audio.rmi.IAudioListener;

public class AudioNode {
	/**
	 * een audionode is een voorstelling van een client zoals deze gebruikt
	 * wordt in de audio manager op de centrale server. Het bevat informatie
	 * over de socket, de listener en of de node in staat is om audiostreams te
	 * starten.
	 * 
	 * @author Siegfried
	 */
	private String ip;
	private int port;
	private boolean ServerEnabled;
	IAudioListener listener;

	public AudioNode(String ip, int port, boolean serverEnabled,
			IAudioListener listener) {
		this.ip = ip;
		this.port = port;
		this.ServerEnabled = serverEnabled;
		this.listener = listener;
	}

	public IAudioListener getListener() {
		return listener;
	}

	public boolean isServerEnabled() {
		return ServerEnabled;
	}

	public void setServerEnabled(boolean b) {
		ServerEnabled = b;

	}

	public String getIp() {
		return ip;
	}

	public int getPort() {
		return port;
	}

	/**
	 * Vergelijkt een node (netwerkobject) met een audionode op basis van het ip
	 * en de poort.
	 */
	@Override
	public boolean equals(Object node) {
		if (node.getClass() == AudioNode.class) {
			AudioNode an = (AudioNode) node;
			return ip.equals(an.ip) && port == an.port;
		} else {
			return false;
		}
	}

	/**
	 * Geeft aan of het ip en de poort overeenkomen met die van deze audionode.
	 */
	public boolean compareTo(String ip2, int port2) {
		return (ip.compareTo(ip2) == 0) && (port == port2);
	}
}
